#单例模式：
#让类创建的对象，在内存中只有唯一的一个实例
#每一次实例化生成的对象，内存地址是相同的
#重写new方法

class Player:
    def __new__(cls, *args, **kwargs):
        print('new 执行了')#重写后没有为__init__分配空间，没有返回任何对象，self就是空的
    def __init__(self):
        print('init执行了')
vedio=Player()
print(vedio)

music=Player()
print(music)

print('*'*50)
class Player:
    __instance=None
    def __new__(cls, *args, **kwargs):
        print('new 执行了')
        if cls.__instance is None:
            cls.__instance=super().__new__(cls)
        return cls.__instance#返回第一个对象的内存地址传递给self
    def __init__(self):
        print('init执行了')
vedio=Player()
print(vedio)

music=Player()
print(music)

print('*'*50)
class Player:
    __instance=None
    __flag=False
    def __new__(cls, *args, **kwargs):
        print('new 执行了')
        if cls.__instance is None:
            cls.__instance=super().__new__(cls)
        return cls.__instance#返回第一个对象的内存地址传递给self
    def __init__(self):
        if not self.__flag:
            print('init执行了')
            self.__flag=True

vedio=Player()
print(vedio)

music=Player()
print(music)













